Communication networks consist of a variety of hardware equipment and software and are increasing in use and complexity. The popularity of communication networks and the growth in amount of data transferred between network users has forced the capacity of networks and protocols to increase with time. A variety of network communication protocols transfer data between devices coupled by a network. Ethernet and Asynchronous Transfer Mode are examples of such communication protocols.
Asynchronous Transfer Mode ("ATM", hereafter) provides bandwidths as low as 25 megabits/second using twisted cables and as high as 10 gigabits/second using optical cables. An ATM switch transfers cells between various points in a network. A cell contains control information, a header, and a data packet. The header within the cell contains switching identifiers enabling the ATM switch to route the data. The ATM switch interrogates each switching identifier it receives against a programmed list to determine which output channel the cell should be output. When the data packets are received by the intermediate node, destination information is contained in header which accompanies the data packet. The node determines whether it has previously agreed to route the data packets for that transmission by examining its memory to determine whether the destination information has previously been stored. If it has, a forwarding address has also been stored and the node forwards the data packet to the next node in the route toward the destination address.
Content addressable memories ("CAM", hereafter) store the switching identifiers for the ATM switch. In a CAM, match words and switching identifiers are stored in associated pairs in memory. When the CAM receives a reference word it determines whether a match word equal to the reference word is stored in memory. If so, it produces the link word associated with the matched reference word. An important aspect of a CAM is the association between the match word and its associated link word, much like a dictionary, where each word is stored in association with its definition. In a dictionary, a provided word is looked up and the definition associated with the word is produced. In a CAM, a provided reference word is looked up, i.e., compared with a match word and, if they are equal, a link word associated with the match word is produced.
In general, the memory array of an ATM CAM is organized into a match word table and a link word table. If a reference word matches an entry from a match word table, the associated link word is produced at the output. If no match is found, the output word indicates the failure by, for example, setting an error flag bit.
Smaller sized CAMs often provide this function in hardware such that the reference word is simultaneously compared with every word in the match word table, thereby operating in a full parallel mode in which the output word is produced in one clock cycle. However, as the need for larger CAMs grows, the parallel mode is not possible due to larger die sizes and power constraints.
Also, the match word tables contain only one word per CAM entry, limiting the amount of switching identifier information in association with each CAM entry. However, the communication networks are growing and need the flexibility of adding or deleting match bits to the CAM entry in the match word table. Preferably, such flexibility would not require new hardware or software. As communication networks and ATM switches handle more switching identifier information and data at higher speeds, a need exists to store and compare more switching identifier information and data per CAM entry in the match word table.